unit BillHandle;

interface

uses
  Classes, MaterielInBill, MaterielOutBill, OrderForm, ProductOutBill,
  ProductInBill, OrderProcedure, SemiProductInBill, SemiProductOutBill;


type

  TBillHandleType =
    (
    BillHandle_MaterielIn,
    BillHandle_MaterielOut,

    BillHandle_ProductIn,
    BillHandle_ProductOut,

    BillHandle_SemiProductIn,
    BillHandle_SemiProductOut,

    BillHandle_Order,
    BillHandle_OrderProcedure

    );

  TBillHandle = class
  private
    FfrmMaterielInBill    : TfrmMaterielInBill;
    FfrmMaterielOutBill   : TfrmMaterielOutBill;

    FfrmProductInBill     : TfrmProductInBill;
    FfrmProductOutBill    : TfrmProductOutBill;

    FfrmOrderProcedure    : TfrmOrderProcedure;

    FfrmSemiProductInBill : TfrmSemiProductInBill;
    FfrmSemiProductOutBill : TfrmSemiProductOutBill;


    FfrmOrder: TfrmOrder;
  public
    destructor Destroy; override;

    procedure HandleBill(aType: TBillHandleType);
  end;


implementation

uses
  GlobalObject;


{ TBillHandle }

destructor TBillHandle.Destroy;
begin

  if Assigned(FfrmMaterielInBill) then
    FfrmMaterielInBill.Free;

  if Assigned(FfrmMaterielOutBill) then
    FfrmMaterielOutBill.Free;

  if Assigned(FfrmProductInBill) then
    FfrmProductInBill.Free;

  if Assigned(FfrmProductOutBill) then
    FfrmProductOutBill.Free;

  if Assigned(FfrmOrderProcedure) then
    FfrmOrderProcedure.Free;

  if Assigned(FfrmOrder) then
    FfrmOrder.Free;

  if Assigned(FfrmSemiProductInBill) then
    FfrmSemiProductInBill.Free;

  if Assigned(FfrmSemiProductOutBill) then
    FfrmSemiProductOutBill.Free;

  inherited;
end;

procedure TBillHandle.HandleBill(aType: TBillHandleType);
begin
  case aType of
    BillHandle_MaterielIn:
    begin
      if not Assigned(FfrmMaterielInBill) then
      begin
        FfrmMaterielInBill := TfrmMaterielInBill.create(nil);
      end;
      FfrmMaterielInBill.LoginUser := gGloblObject.AuthorityHandle.LoginUser;
      FfrmMaterielInBill.Showmodal;
    end;
    BillHandle_MaterielOut:
    begin
      if not Assigned(FfrmMaterielOutBill) then
      begin
        FfrmMaterielOutBill := TfrmMaterielOutBill.create(nil);
      end;
      FfrmMaterielOutBill.LoginUser := gGloblObject.AuthorityHandle.LoginUser;
      FfrmMaterielOutBill.Showmodal;
    end;
    BillHandle_ProductIn:
    begin
      if not Assigned(FfrmProductInBill) then
      begin
        FfrmProductInBill := TfrmProductInBill.create(nil);
      end;
      FfrmProductInBill.LoginUser := gGloblObject.AuthorityHandle.LoginUser;
      FfrmProductInBill.Showmodal;
    end;
    BillHandle_ProductOut:
    begin
      if not Assigned(FfrmProductOutBill) then
      begin
        FfrmProductOutBill := TfrmProductOutBill.create(nil);
      end;
      FfrmProductOutBill.LoginUser := gGloblObject.AuthorityHandle.LoginUser;
      FfrmProductOutBill.Showmodal;
    end;
    BillHandle_SemiProductIn:
    begin
      if not Assigned(FfrmSemiProductInBill) then
      begin
        FfrmSemiProductInBill := TfrmSemiProductInBill.create(nil);
      end;
      FfrmSemiProductInBill.LoginUser := gGloblObject.AuthorityHandle.LoginUser;
      FfrmSemiProductInBill.Showmodal;
    end;
    BillHandle_SemiProductOut:
    begin
      if not Assigned(FfrmSemiProductOutBill) then
      begin
        FfrmSemiProductOutBill := TfrmSemiProductOutBill.create(nil);
      end;
      FfrmSemiProductOutBill.LoginUser := gGloblObject.AuthorityHandle.LoginUser;
      FfrmSemiProductOutBill.Showmodal;
    end;
    BillHandle_Order:
    begin
      if not Assigned(FfrmOrder) then
      begin
        FfrmOrder := TfrmOrder.create(nil);
      end;
      FfrmOrder.LoginUser := gGloblObject.AuthorityHandle.LoginUser;
      FfrmOrder.Showmodal;
    end;
    BillHandle_OrderProcedure:
    begin
      if not Assigned(FfrmOrderProcedure) then
        FfrmOrderProcedure := TfrmOrderProcedure.Create(nil);

      FfrmOrderProcedure.LoginUser := gGloblObject.AuthorityHandle.LoginUser;
      FfrmOrderProcedure.Showmodal;
    end
    else
      Exit;
  end;



end;

end.
